import { isUniMob } from '../uni-util/uni-util';

/**
 * localStorage 工具类
 *
 * 适配uniapp环境
 *
 * @export
 * @class LocalStorageUtil
 */
export class LocalStorageUtil {
  /**
   * 删除所有键/值对(如果有的话)
   * - 慎用在uinapp中所有的数据都存在同一位置，直接清空可能会导致其他类型的储存数据也被清空
   * @static
   * @memberof LocalStorageUtil
   */
  static clear(): void {
    if (isUniMob()) {
      uni.clearStorageSync();
    } else {
      localStorage.clear();
    }
  }

  /**
   * 返回与给定键相关联的当前值，如果给定键不存在则返回null。
   *
   * @static
   * @param {string} key 键
   * @return {*}  {(string | null)}
   * @memberof LocalStorageUtil
   */
  static getItem(key: string): string | null {
    if (isUniMob()) {
      return uni.getStorageSync(key);
    }
    return localStorage.getItem(key);
  }

  /**
   * 将由key标识的对的值设置为value，如果先前不存在key，则创建一个新的键/值对
   *
   * @static
   * @param {string} key 键
   * @param {string} value 值
   * @memberof LocalStorageUtil
   */
  static setItem(key: string, value: string): void {
    if (isUniMob()) {
      uni.setStorageSync(key, value);
    } else {
      localStorage.setItem(key, value);
    }
  }

  /**
   * 如果存在具有给定键的键/值对，则删除具有给定键的键/值对
   *
   * @static
   * @param {string} key
   * @memberof LocalStorageUtil
   */
  static removeItem(key: string): void {
    if (isUniMob()) {
      uni.removeStorageSync(key);
    } else {
      localStorage.removeItem(key);
    }
  }
}
